package com.RS.AndroidSDK;

import java.nio.ByteBuffer;
import java.nio.DoubleBuffer;

import android.util.Log;

//.so库文件属于jni动态库，classname和packagename必须用此固定名称。
public class HardwareCtrl {
    /*注意：
    1.“启动(__init)”模块后才可以“读取(__read)”数据。
    2.不需要读取数据的时候必须“关闭(__close)”模块，防止下次启动冲突也为了节电。
    3.由于每个模块硬件电路的不同，“启动”(__init)模块后可能会有1-5秒后才能读取数据。
    */

    //射频卡 tag参数： 1 表示125K卡，2 表示1443a卡, 3表示15693卡, 5表示1443a&&15693卡, 6表示900M超高频
    static public native String Fridinit(int tag);

    static public native String Fridread();//读取卡ID

    static public native String FridreadData(int block, String pass);//读取卡数据，返回读取内容

    static public native int FridwriteData(int block, String pass, String data);//写卡数据，返回标记“1”成功，其它失败。

    static public native String Fridclose();
	/*
	 关于block块号（块和扇区都是从0开始）：
	 1.15693共64块(0..63), 每块4位.
	 2.1443a共16扇区，每扇区4块，每块16位,0扇区0块是“只读卡编号信息”，每个扇区第4块是“秘钥区不可读写”,
	     实际使用block范围换算后是0..63，其中0是“只读卡编号信息”，3、7、11、15....（即block+1整除4）是“秘钥区不可读写”。
     关于pass秘钥：15693无秘钥，1443a必须是6位秘钥或者空秘钥）。
     关于data数据：15693每块数据长度不超过4位，1443a每块不超过16位。
    */

    //温度模块 tag辐射率（0.01-0.99）各种材质发射率//////////////
    static public native String IRTinit(String tag);//tag为辐射率，返回值为生效后的发射率

    static public native String IRTgetTC();//发射率

    static public native String IRTsetTC(String coefficient);//设置发射率

    static public native String IRTread();

    static public native String IRTclose();

    //振动模块 tag 1位移, 0速度, 2加速度    freq 0低频 1高频
    static public native String VIBinit(int tag, int freq);

    static public native String VIBread();//读取振动值

    static public native String VIBfreqread(double[] buf);//读取时域谱 freq 5120, len 1024

    static public native String VIBclose();


    static {
        try {
            System.loadLibrary("RSdevice35");
        } catch (UnsatisfiedLinkError e) {
            Log.d("HardwareControler", "RS. library not found!");
        }
    }
}